﻿using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.SessionState;
using System.Data;
using vudu.Logica.Fachada;
using System.Text.RegularExpressions;
using vudu.Presentacion.Contrato.VU_02_Gestionar_Escuelas;
using vudu.ClasesDominio;

namespace vudu.Presentacion.Presentador.VU_02_Gestionar_Escuelas
{
    public class PresentadorEliminarEscuela
    {
        public IContratoEliminarEscuela _vistaEliminar;
        private EnlaceLogico _fachada;
        private String _mensajeExitoso = "Escuela eliminada";
        private String _mensajeErrorBd = "Operación Fallida: No hay Escuelas";
        private String _mensajeErrorDatos = "No se puede eliminar la escuela, tiene pensum o materias con estado activo";
        private System.Drawing.Color _colorMensajeExitoso = System.Drawing.Color.Green;
        private System.Drawing.Color _colorMensajeError = System.Drawing.Color.Red;
        private List<Escuela> _listaDeEscuelas;
        internal Universidad _uni;

        public PresentadorEliminarEscuela(IContratoEliminarEscuela vistaEliminar, EnlaceLogico fachada)
        {
            _vistaEliminar = vistaEliminar;
            _fachada = fachada;
        }
        public void ConsultarEscuelas()
        {
            List<Escuela> _listaDeEscuelas = new List<Escuela>();
            _uni = (Universidad)_fachada.RolActual;
            _listaDeEscuelas = _fachada.ConsultarListaEscuela(_uni.Nombre);
            _vistaEliminar.Usuario.Text = _uni.Nombre;
            //Se carga las Escuelas en la tbala
            if (_listaDeEscuelas.Count != 0)
            {
                CargarTabla(_listaDeEscuelas);
            }
            else
            {
                _vistaEliminar.MensajeConfirmacion.Visible = false;
                _vistaEliminar.ConsultarEscuelas.Visible = false;
                _vistaEliminar.MensajeError.Text = _mensajeErrorBd;
                _vistaEliminar.MensajeError.ForeColor = _colorMensajeError;
                _vistaEliminar.MensajeError.Visible = true;
                
            }

        }
        //Cargo el gridview con las escuelas
        public void CargarTabla(List<Escuela> listaDeEscuelas)
        {
            

            DataTable tabla = new DataTable();
            tabla.Columns.Add("Escuela", typeof(string));
            tabla.Columns.Add("Director", typeof(string));
            tabla.Columns.Add("Telefono", typeof(string));
            foreach (Escuela escuela in listaDeEscuelas)
            {
                String nombreEscuela = escuela.NombreEscuela;
                if (nombreEscuela != null)
                {
                    tabla.Rows.Add(escuela.NombreEscuela, escuela.DirectorEscuela,
                    escuela.TelefonoEscuela);

                }
            }
            _vistaEliminar.MensajeError.Visible = false;
            _vistaEliminar.MensajeConfirmacion.Visible = false;
            _vistaEliminar.ConsultarEscuelas.DataSource = tabla;
            _vistaEliminar.ConsultarEscuelas.DataBind();
        }
        //Elimino la escuela
        public void EliminarEscuela()
        {
            _uni = (Universidad)_fachada.RolActual;
            //obtengo la lista de las escuelas
            _listaDeEscuelas = _fachada.ConsultarListaEscuela(_uni.Nombre);
            //Veo que posicion seleccione en el gridview
            int Seleccion = (_vistaEliminar.ConsultarEscuelas.PageIndex * 8) + _vistaEliminar.ConsultarEscuelas.SelectedIndex;
            //obtengo el id de la escuela en esa posicion
            int idEscuela = _listaDeEscuelas[Seleccion].IdEscuela;
            //elimino, lo que me vuelve un true si elimina y false si no elimina
            bool eliminada= _fachada.EliminarEscuela(idEscuela);
            //si elimino entro aqui
            if (eliminada == true)
            {
                _vistaEliminar.MensajeError.Visible = false;
                _vistaEliminar.MensajeConfirmacion.Text = _mensajeExitoso;
                _vistaEliminar.MensajeConfirmacion.ForeColor = _colorMensajeExitoso; 
                // depsues de eliminar, vuelvo a cargar la lista de escuela
                ConsultarEscuelas();
                _vistaEliminar.MensajeConfirmacion.Visible = true;
            }
            else //de lo contrario aqui
            {
                _vistaEliminar.MensajeConfirmacion.Visible = false;
                _vistaEliminar.MensajeError.Text =_mensajeErrorDatos;
                _vistaEliminar.MensajeError.ForeColor = _colorMensajeError;
                _vistaEliminar.MensajeError.Visible = true;
            }
           

        }


    }
}